/**
 * Title: PermitCoreService.java
 * Description: Copyright: Copyright (c) 2019 Company: BHFAE
 *
 * @author Sharp
 * @date 2019-7-31 16:03
 * @description Project Name: Grote
 * @Package: com.srct.service.account.service
 */
package com.sharp.authorization.service.permit;

import com.sharp.authorization.vo.permit.*;

import java.util.List;

public interface PermitCoreService {

    /**
     * 获取权限列表
     *
     * @return 获取全体权限列表
     */
    List<PermitRes> getAllPermit();

    /**
     * 获取指定客户端类型权限列表
     *
     * @param clientType 客户端类型
     * @return
     */
    List<PermitRes> getAllPermitByClientType(String clientType);

    /**
     * 获取权限树
     *
     * @param clientType 客户端类型
     * @return 获取全体权限树
     */
    List<AllPermitTreeRes> getAllPermitTree(String clientType);

    /**
     * 获取权限列表
     *
     * @param customerNumber 用户id
     * @param clientType     客户端类型
     * @return 权限树
     */
    List<PermitRes> getPermitListByCustomerNumber(String customerNumber, String clientType);

    /**
     * 获取权限列表
     *
     * @param userId 用户id
     * @param clientType     客户端类型
     * @return 权限树
     */
    List<PermitRes> getPermitListByUserId(String userId, String clientType);

    /**
     * 获取权限树
     *
     * @return 权限树
     */
    List<PermitTreeRes> getPermitTree();

    /**
     * 获取权限树
     *
     * @param roleIdList 角色ID列表
     * @return 权限树
     */
    List<PermitRes> getRolePermitList(List<String> roleIdList);

    /**
     * 获取权限树
     *
     * @param roleIdList 角色ID列表
     * @param clientType 客户端类型
     * @return 权限树
     */
    List<PermitRes> getRolePermitList(List<String> roleIdList, String clientType);

    /**
     * 获取权限树
     *
     * @param userId     用户ID
     * @param clientType 客户端类型
     * @return 权限树
     */
    List<PermitTreeRes> getUserPermitTree(String userId, String clientType);

    /**
     * 绑定用户角色
     *
     * @param req 用户角色绑定数据
     */
    void bindUserRole(BindUserRoleReq req);

    /**
     * 绑定角色权限
     *
     * @param req 角色权限绑定数据
     */
    void bindRolePermit(BindRolePermitReq req);

    /**
     * 添加权限条目
     *
     * @param req
     */
    void addPermit(AddPermitReq req);

    /**
     * 更新权限条目
     *
     * @param req
     */
    void updatePermit(UpdatePermitReq req);

    /**
     * 删除权限条目
     *
     * @param req
     */
    void deletePermit(DeletePermitReq req);
}
